package com.hina.rec.application.service.system;

import com.hina.rec.endpoint.req.system.LoginReq;
import com.hina.rec.endpoint.req.system.ResetPasswordReq;
import com.hina.rec.endpoint.res.system.LoginRes;
import com.hina.rec.endpoint.res.system.MenuTreeRes;
import com.hina.rec.endpoint.res.system.UserInfoRes;

import java.util.List;

/**
 * 登录管理Service接口
 *
 * @author liaosp
 * @date 2024-01-10
 */
public interface AuthService {

    /**
     * 用户登录
     *
     * @param req 登录请求
     * @return 登录结果
     */
    LoginRes login(LoginReq req);

    /**
     * 用户注销
     *
     * @return 是否注销成功
     */
    boolean logout();

    /**
     * 刷新令牌
     *
     * @return 新的令牌
     */
    String refreshToken();

    /**
     * 获取登录用户的基本信息
     *
     * @return 用户信息
     */
    UserInfoRes getUserInfo();

    /**
     * 获取登录用户的菜单树
     *
     * @return 菜单树列表
     */
    List<MenuTreeRes> getUserMenuTree();

    /**
     * 重置密码
     *
     * @param req 重置密码请求
     * @return 是否重置成功
     */
    boolean resetPassword(ResetPasswordReq req);
}